package com.ljt.base.http

import com.ljt.base.bean.RandomCommentDataBean
import com.ljt.base.bean.RandomMusicDataBean
import com.ljt.base.bean.Repo
import com.ljt.base.bean.ResponseResult
import retrofit2.Call
import retrofit2.Callback
import retrofit2.http.*

/**
 * @auther :lujiantao
 * @date :2024/4/25 8:59 AM
 * @desc :
 */
interface HttpApi {

    /**
     * headers
     *      "Content-type: application/json"表示请求传输使用json格式
     *      "Accept:applicaton/json" 表示接收使用json格式
     *      "Connection:keep-alive"  keep-alive：长连接开启  close:短连接
     * GET请求
     * user是listRepos方法传递参数，retrofit官网提供参考值octocat
     * user:octocat
     */

    @GET("users/{user}/repos")
    @Headers("Accept: application/json")
    fun listRepos(@Path("user") user: String): Call<List<Repo>>


    //Url的组成，retrofit把网络请求的Url分成两部分设置：
    //第一部分在创建Retrofit实例时通过.baseUrl()设置，
    //第二部分在接口注解中设置
    // 网络请求的完整地址Url = Retrofit实例.baseUrl()+网络请求接口注解()
    // baseUrl : https://api.uomg.com/

    //https://api.uomg.com/api/rand.music?sort=热歌榜&format=json
    // 协程 get 请求 需加suspend 返回值去掉call
    @GET("rand.music")
    fun getRandomMusicByCoroutine(
        @Query("sort") sort: String,
        @Query("format") format: String
    ): Call<RandomMusicDataBean>

    // https://api.uomg.com/api/comments.163?format=text
    // 协程 post 请求 需加suspend 返回值去掉call
    @FormUrlEncoded
    @POST("comments.163")
    fun getRandomCommentByCoroutine(
        @Field("format")format: String
    ): Call<RandomCommentDataBean>

}